package com.conv.shop.business.service;


import com.conv.shop.business.domain.ProductCategory;
import com.conv.shop.business.domain.ProductCategoryExample;
import com.conv.shop.business.mapper.ProductCategoryMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

//@Service 注解通常用于标注业务逻辑层的组件，这
// 有助于保持代码的层次性和可读性。与 @Controller（用于标注控制层组件）
// 、@Repository（用于标注数据访问层组件）等注解一起，它们构成了一个清晰
// 的 MVC（Model-View-Controller）架构。
@Service
public class  CategoryService {
    //    用@Resource注解可以将一个依赖对象注入到另一个对象中
    @Resource
    ProductCategoryMapper productCategoryMapper;

    /**
     * 添加商品类型
     * @param productCategory
     * @return boolean
     */
    public boolean addCategory(ProductCategory productCategory) {
        int i = productCategoryMapper.insert(productCategory);//影响了i条语句，一般都是1
        if (i>0){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 查询商品类型
     * @return List<ProductCategory>
     */
    public List<ProductCategory> getListCategory() {
        ProductCategoryExample productCategoryExample = new ProductCategoryExample();
        productCategoryExample.createCriteria().andCategoryIdIsNotNull();
        return productCategoryMapper.selectByExample(productCategoryExample) ;
    }

    /**
     * 删除商品类型
     * @param name
     * @return boolean
     */
    public boolean deleteCategory(String name ){
        ProductCategoryExample productCategoryExample = new ProductCategoryExample();
        productCategoryExample.createCriteria().andCategoryNameEqualTo(name);

        int i = productCategoryMapper.deleteByExample(productCategoryExample);
        if(i>0){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 更新商品类型
     * @param category
     * @return int
     */
    public int updateCategory(ProductCategory category){
        return productCategoryMapper.updateByPrimaryKeySelective(category);
    }
}
